package dtos

import (
	"strconv"

	"github.com/beego/beego/v2/core/validation"
)

// startPage int, currentPage int,listType int
type GetMalePageParams struct {
	UserId      int64
	UserIdstr   string `json:"user_id"`
	CountryCode string `json:"country_code"`
	StartPage   int    `json:"start_page"`
	CurrentPage int    `json:"current_page"`
	Index       int    `json:"index" comment:"兼容老版本的分页，后续删除"`
}

func (gmpp *GetMalePageParams) Valid(v *validation.Validation) {
	// 验证UserId是否合法
	var err error
	gmpp.UserId, err = strconv.ParseInt(gmpp.UserIdstr, 10, 64)

	if err != nil {
		_ = v.SetError("UserId", "用户编号不合法")
		return
	}

	if gmpp.CountryCode == "" {
		_ = v.SetError("country_code", "国家编号不合法")
		return
	}

	if gmpp.StartPage < 0 {
		_ = v.SetError("start_page", "分页起始页不合法")
		return
	}

	if gmpp.Index < 0 {
		_ = v.SetError("index", "分页索引不合法")
		return
	}

	if gmpp.CurrentPage < 0 {
		_ = v.SetError("current_page", "分页当前页不合法")
		return
	}

	if gmpp.Index > 0 {
		gmpp.CurrentPage = gmpp.Index + 1
		gmpp.StartPage = 1
	}

	return
}

type MalePageRes struct {
	Count int          `json:"count"`
	Index int          `json:"index"`
	Data  []AnchorData `json:"data"`
}

type AnchorData struct {
	AnchorID    int64  `json:"anchor_id"`
	CountryCode string `json:"country_code"`
	Index       int    `json:"index"`
	PayPrice    int    `json:"pay_price"`
	Status      int    `json:"status"`
}

type GetFemalePageParams struct {
	UserId      int64
	UserIdstr   string `json:"user_id"`
	CountryCode string `json:"country_code"`
	StartPage   int    `json:"start_page"`
	CurrentPage int    `json:"current_page"`
	Index       int    `json:"index" comment:"兼容老版本的分页，后续删除"`
}

func (gfpp *GetFemalePageParams) Valid(v *validation.Validation) {
	// 验证UserId是否合法
	var err error
	gfpp.UserId, err = strconv.ParseInt(gfpp.UserIdstr, 10, 64)

	if err != nil {
		_ = v.SetError("UserId", "用户编号不合法")
		return
	}

	if gfpp.CountryCode == "" {
		_ = v.SetError("country_code", "国家编号不合法")
		return
	}

	if gfpp.StartPage < 0 {
		_ = v.SetError("start_page", "分页索引不合法")
		return
	}

	if gfpp.CurrentPage < 0 {
		_ = v.SetError("current_page", "分页索引不合法")
		return
	}

	if gfpp.Index > 0 {
		gfpp.CurrentPage = gfpp.Index + 1
		gfpp.StartPage = 1
	}

	return
}

type GetHomePageParams struct {
	UserId      int64
	UserIdstr   string `json:"user_id"`
	CountryCode string `json:"country_code"`
	StartPage   int    `json:"start_page"`
	CurrentPage int    `json:"current_page"`
	Index       int    `json:"index" comment:"兼容老版本的分页，后续删除"`
}

func (ghpp *GetHomePageParams) Valid(v *validation.Validation) {
	// 验证UserId是否合法
	var err error
	ghpp.UserId, err = strconv.ParseInt(ghpp.UserIdstr, 10, 64)

	if err != nil {
		_ = v.SetError("UserId", "用户编号不合法")
		return
	}

	if ghpp.CountryCode == "" {
		_ = v.SetError("country_code", "国家编号不合法")
		return
	}

	if ghpp.StartPage < 0 {
		_ = v.SetError("start_page", "分页索引不合法")
		return
	}

	if ghpp.CurrentPage < 0 {
		_ = v.SetError("current_page", "分页索引不合法")
		return
	}

	if ghpp.Index > 0 {
		ghpp.CurrentPage = ghpp.Index + 1
		ghpp.StartPage = 1
	}

	return
}
